import axios from 'axios';
import { ElMessage } from 'element-plus';

// 创建axios实例
const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API || '', // 从环境变量获取基础URL
    timeout: 5000 // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 从localStorage获取token
        const token = localStorage.getItem('token');
        // 如果token存在，添加到请求头
        if (token) {
            config.headers['Authorization'] = 'Bearer ' + token;
        }
        return config;
    },
    error => {
        // 处理请求错误
        console.error('请求错误:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    response => {
        // 处理成功响应
        return response.data;
    },
    error => {
        // 处理错误响应
        console.error('响应错误:', error);

        if (error.response) {
            // 根据状态码处理不同的错误
            switch (error.response.status) {
                case 401:
                    ElMessage.error('登录已过期，请重新登录');
                    // 清除本地存储并跳转到登录页
                    localStorage.removeItem('token');
                    localStorage.removeItem('user');
                    window.location.href = '/login';
                    break;
                case 403:
                    ElMessage.error('没有权限访问');
                    break;
                case 404:
                    ElMessage.error('请求的资源不存在');
                    break;
                case 500:
                    ElMessage.error('服务器内部错误');
                    break;
                default:
                    ElMessage.error(`请求错误: ${error.response.status}`);
            }
        } else {
            ElMessage.error('网络错误，请检查网络连接');
        }

        return Promise.reject(error);
    }
);

export default service;
